home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Graphics Programming (2nd Edition) / Visual Basic Graphics Programming 2nd Edition.iso / Src / Ch4 / MkFonts.frm (.txt) < prev    next >
Encoding:
Visual Basic Form  |  1999-04-10  |  5.6 KB  |  135 lines

  1. VERSION 5.00
  2. Begin VB.Form frmMkFonts 
  3.    AutoRedraw      =   -1  'True
  4.    Caption         =   "MkFonts"
  5.    ClientHeight    =   3585
  6.    ClientLeft      =   2040
  7.    ClientTop       =   645
  8.    ClientWidth     =   7200
  9.    LinkTopic       =   "Form1"
  10.    PaletteMode     =   1  'UseZOrder
  11.    ScaleHeight     =   179.25
  12.    ScaleMode       =   2  'Point
  13.    ScaleWidth      =   360
  14. Attribute VB_Name = "frmMkFonts"
  15. Attribute VB_GlobalNameSpace = False
  16. Attribute VB_Creatable = False
  17. Attribute VB_PredeclaredId = True
  18. Attribute VB_Exposed = False
  19. Option Explicit
  20. ' Font weight constants.
  21. Private Const FW_DONTCARE = 0
  22. Private Const FW_THIN = 100
  23. Private Const FW_EXTRALIGHT = 200
  24. Private Const FW_LIGHT = 300
  25. Private Const FW_NORMAL = 400
  26. Private Const FW_MEDIUM = 500
  27. Private Const FW_SEMIBOLD = 600
  28. Private Const FW_BOLD = 700
  29. Private Const FW_EXTRABOLD = 800
  30. Private Const FW_HEAVY = 900
  31. Private Const FW_ULTRALIGHT = FW_EXTRALIGHT
  32. Private Const FW_REGULAR = FW_NORMAL
  33. Private Const FW_DEMIBOLD = FW_SEMIBOLD
  34. Private Const FW_ULTRABOLD = FW_EXTRABOLD
  35. Private Const FW_BLACK = FW_HEAVY
  36. ' Character set constants.
  37. Private Const ANSI_CHARSET = 0
  38. Private Const DEFAULT_CHARSET = 1
  39. Private Const SYMBOL_CHARSET = 2
  40. Private Const SHIFTJIS_CHARSET = 128
  41. Private Const OEM_CHARSET = 255
  42. ' Output precision constants.
  43. Private Const OUT_CHARACTER_PRECIS = 2
  44. Private Const OUT_DEFAULT_PRECIS = 0
  45. Private Const OUT_DEVICE_PRECIS = 5
  46. Private Const OUT_RASTER_PRECIS = 6
  47. Private Const OUT_STRING_PRECIS = 1
  48. Private Const OUT_STROKE_PRECIS = 3
  49. Private Const OUT_TT_ONLY_PRECIS = 7
  50. Private Const OUT_TT_PRECIS = 4
  51. ' Clipping precision constants.
  52. Private Const CLIP_CHARACTER_PRECIS = 1
  53. Private Const CLIP_DEFAULT_PRECIS = 0
  54. Private Const CLIP_EMBEDDED = &H80
  55. Private Const CLIP_LH_ANGLES = &H10
  56. Private Const CLIP_STROKE_PRECIS = 2
  57. Private Const CLIP_TO_PATH = 4097
  58. Private Const CLIP_TT_ALWAYS = &H20
  59. ' Character quality constants.
  60. Private Const DEFAULT_QUALITY = 0
  61. Private Const DRAFT_QUALITY = 1
  62. Private Const PROOF_QUALITY = 2
  63. ' Pitch and family constants.
  64. Private Const DEFAULT_PITCH = 0
  65. Private Const FIXED_PITCH = 1
  66. Private Const VARIABLE_PITCH = 2
  67. Private Const TRUETYPE_FONTTYPE = &H4
  68. Private Const FF_DECORATIVE = 80  '  Old English, etc.
  69. Private Const FF_DONTCARE = 0     '  Don't care or don't know.
  70. Private Const FF_MODERN = 48      '  Constant stroke width, serifed or sans-serifed.
  71. Private Const FF_ROMAN = 16       '  Variable stroke width, serifed.
  72. Private Const FF_SCRIPT = 64      '  Cursive, etc.
  73. Private Const FF_SWISS = 32       '  Variable stroke width, sans-serifed.
  74. Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
  75. Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
  76. Private Declare Function CreateFont Lib "gdi32" Alias "CreateFontA" (ByVal H As Long, ByVal W As Long, ByVal E As Long, ByVal O As Long, ByVal W2 As Long, ByVal I As Long, ByVal u As Long, ByVal S As Long, ByVal C As Long, ByVal OP As Long, ByVal CP As Long, ByVal Q As Long, ByVal PAF As Long, ByVal F As String) As Long
  77. ' Draw a text string at the indicated position
  78. ' using the indicated font parameters.
  79. Private Sub DrawText(ByVal txt As String, ByVal X As Single, ByVal Y As Single, ByVal nHeight As Long, ByVal nWidth As Long, ByVal nEscapement As Long, ByVal fnWeight As Long, ByVal fbItalic As Long, ByVal fbUnderline As Long, ByVal fbStrikeOut As Long, ByVal fbCharSet As Long, ByVal fbOutputPrecision As Long, ByVal fbClipPrecision As Long, ByVal fbQuality As Long, ByVal fbPitchAndFamily As Long, ByVal lpszFace As String)
  80. Dim newfont As Long
  81. Dim oldfont As Long
  82.     newfont = CreateFont(nHeight, nWidth, nEscapement, 0, fnWeight, fbItalic, fbUnderline, fbStrikeOut, fbCharSet, fbOutputPrecision, fbClipPrecision, fbQuality, fbPitchAndFamily, lpszFace)
  83.     oldfont = SelectObject(hdc, newfont)
  84.     CurrentX = X
  85.     CurrentY = Y
  86.     Print txt
  87.     newfont = SelectObject(hdc, oldfont)
  88.     If DeleteObject(newfont) = 0 Then
  89.         Beep
  90.         MsgBox "Error deleting font object.", vbExclamation
  91.     End If
  92. End Sub
  93. ' Draw an assortment of text samples.
  94. Private Sub Form_Load()
  95. Dim X As Single
  96. Dim Y As Single
  97. Dim R As Single
  98. Dim I As Long
  99. Dim theta As Long
  100. Dim pt As Long
  101. Dim fnt As String
  102. Dim ang As Single
  103.     AutoRedraw = True
  104.     ' Different weights.
  105.     X = 10
  106.     CurrentY = 0
  107.     pt = 15
  108.     fnt = "Times New Roman"
  109.     For I = 0 To 900 Step 100
  110.         DrawText "Weight" & Str$(I), X, CurrentY, pt, 0, 0, I, False, False, False, DEFAULT_CHARSET, OUT_TT_ONLY_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, TRUETYPE_FONTTYPE, fnt
  111.     Next I
  112.     ' Tall, thin characters.
  113.     X = 85
  114.     Y = 0
  115.     I = 5
  116.     For pt = 15 To 55 Step 10
  117.         DrawText Format$(pt) & "x" & Format$(I), X, Y, pt, I, 0, 0, False, False, False, DEFAULT_CHARSET, OUT_TT_ONLY_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, TRUETYPE_FONTTYPE, fnt
  118.         Y = Y + pt * 0.5
  119.     Next pt
  120.     ' Short, wide characters.
  121.     X = 135
  122.     pt = 15
  123.     CurrentY = 0
  124.     For I = 3 To 20 Step 3
  125.         DrawText Format$(pt) & "x" & Format$(I), X, CurrentY, pt, I, 0, 0, False, False, False, DEFAULT_CHARSET, OUT_TT_ONLY_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, TRUETYPE_FONTTYPE, fnt
  126.     Next I
  127.     ' Rotated characters.
  128.     pt = 15
  129.     X = 280
  130.     Y = 90
  131.     For theta = 360 To 3600 Step 360
  132.         DrawText "     Escapement" & Str$(theta), X, Y, pt, 0, theta, 0, False, False, False, DEFAULT_CHARSET, OUT_TT_ONLY_PRECIS, CLIP_LH_ANGLES Or CLIP_DEFAULT_PRECIS, PROOF_QUALITY, TRUETYPE_FONTTYPE, fnt
  133.     Next theta
  134. End Sub
  135.